//***************************************************************************
// Class Name: Queue 
//
// Written By: Stephen Durfey 
//
// For: CS 202 MWF 9:30am-10:20am
//
//
// Member Functions: PUBLIC:
//
//	 Queue():
//
//		Default constructor. Sets the pointer to the front of the
//	list to 0 when an object is instantiated by the client program.
//
//	~Queue():
//
//		Deconstructor. Deletes the head pointer.
//
//
//	bool isEmpty():
//
//		When called, checks to see if the Queue is empty. Returns
//	a 1 if the Queue is empty, returns a 0 if it is not empty.
//
//
//
// Member Data:
//
//	*ptrFront: pointer to the front of the Queue
//	*ptrRear: pointer to the rear of the Queue
//
//
// Included Files:
//
//	queuenode.h
//
//***************************************************************************

#include"queuenode.h"
#include<iostream>

using namespace std;

class	Queue
{
   	public:
		Queue() { ptrFront = ptrRear = NULL; }	// default constructor
		Queue(const Queue &);			// copy constructor
		~Queue();	// destructor
		bool isEmpty();		// check to see if Queue is empty
		Queue &operator=(const Queue &);
		void enqueue(int items);
		void dequeue(int &items);
		Queue &operator--();
		Queue &operator+=(int items); 
		Queue &operator+=(Queue &Qobj);
		Queue operator+(Queue &Qobj);
		bool operator>(const Queue &Qobj);
		bool operator<(const Queue &Qobj);
		friend ostream &operator<<(ostream &output, Queue &Qobj);
        // add your function prototypes here

	private:
		void RemoveQueue();
		QueueNode  *ptrFront;		// pointer to the front of the Queue
		QueueNode  *ptrRear;	// pointer to the rear of the Queue
};


//***************************************************************************

